23

» WarCraft 3 / Как сделать способность с баффом

Похожие вопросы:

ответ
Obelick, а можно просто цвет поменять, при наличии бафа
ответ
Ну тебе нужно чтобы был прямо таки бафф который можно рассеивать?
Для начала сделай способность, и баф на основе какой нибудь пустышки, подойдет ярость у некромантов, так же переодический триггер который раз в пол секунды проверяет всех юнитов в группе, есть ли у них бафф если юнит мертв или у него нет баффа, то у юнита удаляется способность на доп урон зданиям и сам унит удаляется из группы.
При касте твоим шаманов заклинания на цель, ты добавляешь цель заклинания в группу, которую и перебирает описанный выше триггер.
Надеюсь понятно?
ответ
Только дебаффы ядовитых стрел могут стакатся, но даммик обязан иметь дальнюю атаку (при условии что у разных абилок ядовитых стрел будут разные баффы в настройках).
Так же можно юзать таймер и ауру торнадо как написали выше, ну если уж совсем нужен сложный бафф как дефолтный - то тут триггер и немного гемора с мемхаком, зато полный комплект параметров (мигает иконка в статусе перед завершением время действия, бафф спадает с цели после диспела, смерти (у цели крест перерождения или аналог), складывается или не складывается в зависимости от кода).
Пример не рекомендуемый к повторению
function FormatAirportTrainingBar takes integer fp_n returns string
    local string str = ""

    if ( fp_n <= 0 ) then
        return str
    endif

    loop
        exitwhen fp_n < 10
        if ( udg__TempBarStyle == 0 ) then
            set str = str + "''''''''''"
        else
            set str = str + "||||||||||||||||||||"
        endif
        set fp_n = fp_n - 10
    endloop

    loop
        exitwhen fp_n <= 0
        if ( udg__TempBarStyle == 0 ) then
            set str = str + "'"
        else
            set str = str + "||"
        endif
        set fp_n = fp_n - 1
    endloop

    return str
endfunction

function UpdateAirportTrainingBar takes texttag tt, integer fp_nTick, integer fp_nTickMax returns nothing
    local integer nProgress
    local integer nLen
    local string strTT1
    local string strTT2

    if ( tt == null ) then
        call BJDebugMsg( "text tag hDZzRwuZxFQcXqaMPnML null" )
        return
    endif

    set nLen = R2I( I2R( fp_nTickMax ) / 300 * 100 )
    set nProgress = R2I( I2R( nLen ) / fp_nTickMax * fp_nTick )
    set strTT1 = "" + FormatAirportTrainingBar( nProgress )
    set strTT2 = FormatAirportTrainingBar( nLen - nProgress ) + ""
    call SetTextTagText( tt, "|cff0080c0" + strTT1 + "|r|cffff0000" + strTT2 + "|r", 0.023 )
endfunction

function Get_Staff_of_Purification takes unit runner returns item
    set bj_forLoopAIndex = 0
    set bj_lastCreatedItem = null
    
    if GetUnitAbilityLevel( runner, 'Arun' ) == 0 then
        return null
    endif
    
    loop
        exitwhen bj_forLoopAIndex > 5

        set bj_lastCreatedItem = UnitItemInSlot( runner, bj_forLoopAIndex )
        if GetItemTypeId( bj_lastCreatedItem ) == 'I01A' then
            return bj_lastCreatedItem
        endif

        set bj_forLoopAIndex = bj_forLoopAIndex + 1
    endloop

    return bj_lastCreatedItem
endfunction

function Trig_RunnerDamageDetect_Conditions takes nothing returns boolean
    if GetTriggerEventId( ) == EVENT_UNIT_DAMAGED then
        return GetEventDamage( ) > 0.00 and GetEventDamageSource( ) != GetTriggerUnit( ) and GetEventDamageSource( ) != DummyAttacker
    endif
    return true
endfunction

function HealRunner takes nothing returns nothing
    local DamageData dd = GetDataBX( GetExpiredTimer( ) )
    
    call UnitRemoveAbility( dd.attacked, 'AMhp' )
    call SetUnitState( dd.attacked, UNIT_STATE_LIFE, dd.hp )
    
    call RemoveDataBX( dd.trix )
    call DestroyTimer( dd.trix )
    call dd.clear( )
    call dd.destroy( )
endfunction

function Trig_RunnerDamageLock_Actions takes nothing returns nothing
    local TriggerData st = GetDataBX( GetTriggeringTrigger( ) )
    local DamageData dd
    local eventid id = GetTriggerEventId( )
    
    if id == EVENT_GAME_TIMER_EXPIRED and st.id < st.time and st.attacked != null then
        set st.id = st.id + 1
        if GetUnitAbilityLevel( st.attacked, 'Bcyc' ) > 0  or GetUnitAbilityLevel( st.attacked, 'Bcy2' ) > 0 then
            call SetTextTagPos( st.tt, GetUnitX( st.attacked ) - 60.00, GetUnitY( st.attacked ) - 60.00, 585.00 )
        else
            call SetTextTagPos( st.tt, GetUnitX( st.attacked ) - 60.00, GetUnitY( st.attacked ) - 60.00, 80.00 + GetUnitFlyHeight( st.attacked ) )
        endif
        call UpdateAirportTrainingBar( st.tt, 100 - R2I( st.dmg / st.hp * 100.00 ), 100 )
        
    elseif id == EVENT_UNIT_DAMAGED and st.dmg < st.hp then
        set dd = DamageData.create( )
        set dd.trix = CreateTimer( )
        set dd.attacked = st.attacked
        set dd.dmg = GetEventDamage( )
        set dd.hp = GetUnitState( dd.attacked, UNIT_STATE_LIFE )
        
        call SetDataBX( dd.trix, dd )
        call UnitAddAbility( dd.attacked, 'AMhp' )
        call SetUnitState( dd.attacked, UNIT_STATE_LIFE, dd.hp + dd.dmg )
        
        call TimerStart( dd.trix, 0.00, false, function HealRunner )
        
        set st.dmg = st.dmg + dd.dmg
    else
        call UnitRemoveAbility( st.attacked, 'A08L' )
        call UnitMakeAbilityPermanent( st.attacked, false, 'A08L' )
        call DisableTrigger( st.trg )
        call SetTextTagVisibility( st.tt, false )
        
        if not IsUnitDead( st.attacked ) then
            call UnitRemoveAbility( st.attacked, 'B00A' )
        endif
        
        call RemoveSavedInteger( gg_htb_HashData, ExKeySoPRunner, GetHandleId( st.attacked ) )
        
        call st.RemoveTrigger( )
        call st.destroy( )
    endif
    
    set id = null
endfunction

function Trig_Staff_of_Purification_Actions takes nothing returns nothing
    local TriggerData dd
    local unit Runner = GetSpellAbilityUnit( )
    local integer RunnerId = GetHandleId( Runner )
    local item Staff = LoadItemHandle( gg_htb_HashData, RunnerId, ExKeySoP )
    local integer ChargesCount = 0
    local trigger trig = LoadTriggerHandle ( gg_htb_HashData, ExAtomShield, RunnerId )
    local integer pBuff
    
    if Staff == null then
        set Staff = Get_Staff_of_Purification( Runner )
         
        if Staff == null then
            //call DisplayTextToPlayer( Player( CrashPlayerNumber ), 0.00, 0.00, I2Sx( 'A01Q', CrashPlayerNumber ) )
            call BJDebugMsg( DEBUG + I2Sx( 'A02O', 0 ) + INFO )
            return
        endif
        
        call SaveBoolean( gg_htb_HashData, RunnerId, ExKeyHasStaff, true )
        call SaveItemHandle( gg_htb_HashData, RunnerId, ExKeySoP, Staff )
    endif
    
    set ChargesCount = GetItemCharges( Staff )
    
    if ChargesCount < 1 then
        set Runner = null
        set Staff = null
        set trig = null
        return
    endif
    
    call SetItemCharges( Staff, 0 )
    
    if trig != null then // блокирующие урон способности не складываются.
        call TriggerExecute( trig )
        set trig = null
    endif
    
    set dd = TriggerData.create( )
    set dd.attacked = Runner
    set dd.pl = GetOwningPlayer( Runner )
    set dd.trg = CreateTrigger( )
    set dd.trc = TriggerAddCondition( dd.trg, Condition( function Trig_RunnerDamageDetect_Conditions ) )
    set dd.tra = TriggerAddAction ( dd.trg, function Trig_RunnerDamageLock_Actions )
    set dd.tt = CreateTextTag( )
    set dd.hp = 1000.00 * ChargesCount
    set dd.dmg = 1.00
    set dd.id = 0
    set dd.time = 480
    set dd.c = 0.03125
    
    call UnitAddAbility( Runner, 'A07E' )
    call UnitRemoveAbility( Runner, 'A07E' )
    call UnitAddAbility( Runner, 'A08L' )
    call UnitMakeAbilityPermanent( Runner, true, 'A08L' )
    
    call SetDataBX( dd.trg, dd )
    call SaveInteger( gg_htb_HashData, ExKeySoPRunner, RunnerId, dd )
    
    call TriggerRegisterPlayerEvent( dd.trg, dd.pl, EVENT_PLAYER_LEAVE )
    call TriggerRegisterDeathEvent( dd.trg, Runner )
    call TriggerRegisterUnitEvent( dd.trg, Runner, EVENT_UNIT_DAMAGED )
    
    call TriggerRegisterTimerEvent( dd.trg, 0.03125, true )
    
    if GetLocalPlayer( ) == dd.pl or IsPlayerAlly( GetLocalPlayer( ), dd.pl ) then
        call SetTextTagVisibility( dd.tt, true )
    else
        call SetTextTagVisibility( dd.tt, false )
    endif
    
    set pBuff = GetUnitAbility( dd.attacked, 'B00A' ) + 0x90
    set dd.c = TimerGetElapsed( DispTimer )
    call WMem( RMem( pBuff ) + 0x4, mR2I( dd.c + 15.10 ) )
    call WMem( RMem( pBuff ) + 0x8, mR2I( dd.c + 10.408 ) )
    call SetBuffLevel( pBuff - 0x90, ChargesCount )
    call UpdateAirportTrainingBar( dd.tt, 100, 100 )
    
    set Runner = null
endfunction
    
//===========================================================================
function InitTrig_Staff_of_Purification takes nothing returns nothing
    set udg__TempBarStyle = 0
endfunction
Выше пример баффа для предмета, который образует щит блокирующий урон, кол-во заблокированного урона и сколько еще заблокирует щит отображается над головой героя, в виде полоски здоровья (только цвет сине-красный). Так же в статуе есть бафф, один в 1 как бафф дефектных способностей вара, не складывается - новый, перебивает старый. И так далее...
ответ
Вот держи. За подробностями в вк можешь обратится и если такое дело помогу доработаю систему на jass ( мой вк - vk.com/id446544976 )
ответ
Здравствуй, посмотрел карту, на счет вейтов кстати не думаю хорошая идея ими пользоваться, но вызывать какую именно "щупальце" в принципе можно сделать так(проверкой на уровень способности) и все это будет одним триггером
тоже самое можно и с первыми 3 сократить в 1, простой проверкой на уровень способности

23

» WarCraft 3 / Звуки нестандартных юнитов

Похожие вопросы:

ответ
biridius, если это есть в РО, то прибегать к триггерам явно не обязательно.
ответ
ClotPh, а сама функция прелоада не рубится потоком при этом (возможно, прописано слишком много и оно требует разбития на отдельные потоки прелоада через ExecuteFunc)?
ответ
Оказывается озвучка пропадает только у тех юнитов, у которых нестандартная модель...
И этот баг скорей всего никак не исправить.
ответ
Диалоги в 1.30 и ниже должны быть в формате MP3, битрейтом 80 kbps, частотой дискретизации 44100 hz, одним каналом (моно)
Звуки юнитов в 1.30 и ниже должны быть в формате WAV, семпл рейтом 22050 hz, 16 бит на семпл
По крайней мере, в архивах близзард они такие.
В reforged всё должно быть посовременней

23

» WarCraft 3 / Помощь по Mdlvis

Похожие вопросы:

ответ
~8gabriel8:
Идея!
В модели один слой, а можно выделить ветви и на новый слой их, а там уже можешь делать смещение без коверкания наложения текстуры.
Что-то с моделью этой, не получается провернуть указанную операцию, постоянно вылетает ошибка.
ответ
~8gabriel8:
Убрал видимость в Death:
Через две секунды исчезновение делать не стал, потому что немного муторнее и требует проверок. Там по идее надо ставить плавное растворение на 2000 кадров. Принцип опять же можешь посмотреть у моделей с разлагающимся трупом.
ответ
Taurenus,
  1. Идем сюда, читаем внимательно, возвращаемся, когда поймем содержание, в противном случае циклим прочтение, пока не поймем.
  2. Идем сюда, читаем внимательно, возвращаемся, когда поймем содержание, в противном случае циклим прочтение, пока не поймем.
  3. Как правило, те, кому нужен 1 скилл, потом придут за 2-3-4-5-6-7...100000, ибо их подход к работе / творчеству исходно выстроен на паразитировании.
Если совсем упрямый, то раздел вопросов не создан для философских вопросов, вам либо в блог, либо в социальные сети.
ответ
rsfghd, нормали сделаны не для изменения цвета поверхности, а для реакции на падение света под разными углами.
Грубо говоря, на примере шара - ты можешь сделать шар из мешей очень круглым, а можешь сделать его ребристым, имея одинаковое число вершин.
В первом случае нормали смежных вершин соседних треугольников смотрят в одну сторону (общая для соседей), во втором случае нормаль каждого треугольника перпендикулярна его поверхности (не связана с соседними).
А то, что у тебя получаются черные модели - то результат неверного их расположения.
Для изменения свойств поверхности надо использовать материалы
ответ
Вроде бы удалось решить проблему самостоятельно. Ошибка действительно была элементарной - идентификатор не устраивал введённый туда заглавный символ, а я не знал об этом. Простите за беспокойство.

23

» WarCraft 3 / Не работает триггер выделения героя

Похожие вопросы:

ответ
скачай этот файл и закинь его в папку AdicHelper\lib\ в папке с jngp
после в шапке карты напиши include "ifdebug.j"
и создай триггер с событием
игрок написал в чат ifdebug как точное совпадение
действие
кастом скрипт log()
после чего запусти карту и напиши в чат ifdebug
он выведет на экран все if/else/elseif через которые он прошёл (true в скобках в конце строки означает что значение в ифе истина)
ответ
XGM Bot:
Похожие вопросы:

ответ
Steal nerves:
Честно я не знаю меняет родная защита и прочие характеристики юнита при использовании тёмный. Давно не игрался с этим. Да и делал я типа кур. Говорят там только модель меняется. А вот перевоплощение да там могут меняться атрибуты и прочее. Если так то редактируйте этого юнита. И вообще проверяйте сами все
При использовании абилы тёмный сам юнит никуда не удаляется, просто модель меняется (сам даже удалял много ещё) - трудно проверить?
Сделал с перевоплощением. Спасибо за идею.
Rare:
А почему ты не можешь просто сделать так,чтобы предмет с твоей броней просто одевался на героя.Это самый простой вариант,в котором есть только одна проблема-найти/сделать модель этого предмета.
Работаю с ВоВ-моделью. Проще сделать много скинов к ней, как в самой ММО, чем модель брони.
ответ
  1. а) Создай 2 переменные-массива по типу "боевая единица" (массив - чтобы для каждого игрока, мы ведь за мультиплеер трем, прально?), назови типа MyChampion и MyChampionDummy.
    б) подготовь невидимого героя-пустышку с нужной тебе иконкой, убери ману, если у чемпиона ее нет. Убери ему радиус обзора, убери галочки типа "отмечать на мини-карте" - остальные - опционально.
    В дальнейшем мы будем синхронизировать пустышку и реального чемпиона, создавая видимость одной боевой единицы.
    Итак, наш первый триггер:
в) Отследи первое появление чемпиона, когда это случится - создай для игрока героя-пустышку. Соответственно сделай MyChampion [number of (Owner of trained unit)]= last trained unit, следующей строчкой создай того самого героя-пустышку для (owner of trained unit) и сделай MyChampionDummy = last created unit. Теперь мы прочно связали этих чуваков. Этот же триггер запускает остальные.
г) Отслеживание здоровья. Сделай изначально выключенный цикличный триггер, там, каждые 0.3 секунды. Триггер запускается пунктом в). Каждые 0.3 секунды меняй здоровье героя (чья икона висит, надо чтобы она соответствовала, прально?) в % на здоровье самого чемпиона.
д) пропищи событие, мол, если выбирает игрок своего героя (кликая на иконку) выбирается чемпион
е) убивай героя вместе с чемпионом
ж) отключай триггеры с проверкой и выбором, пока чемпион мертв
з) не забывай обновлять переменную чемпиона с каждым новым чемпионом.
ответ
Вот, должно работать. Если понадобится временное подчинение - таймер поможет.
ответ
Afterdeath, ну если поймаешь меня сегодня-завтра в Discord'е (discord.gg/Rze5sGP), то могу сделать в лучшем виде.


23

» WarCraft 3 / АОЕ хил

Похожие вопросы:

ответ
Уже решил.для тех кто будет искать данный вопрос - можно использовать свиток регенерации(Раса:люди),он игнорирует сколько у вас хп и имеет длительность.
ответ
гуи
ответ
Нет, далеко не все фишки и особенности известны. Все способности описаны в движке игры, защита от магии горного великана это клон множества абилок защиты от магии, главная их суть - выдать классификацию герой юниту. Т.е после появления этой способности горный великан становится героем и его нельзя полиморфить, переманивать и так далее.
Применять на маг имунных можно только высшие заклинание - т.е только геройские, у который требование к уровню выше 1, в до целях уязвимые\неуязвимые.
ответ
Умножаете максимальное здоровье на 0.1, а полученное значение добавляем к текущему здоровью.. Это и будет 10% хил от максимального хп.
ответ
~8gabriel8:
Нету в карте триггера на стакание предмета, но есть непонятный триггер дропа:
Как понимаю, он должен работать лишь для определённого вида героев, которых автор зачем-то удалил, но не суть, главное, что вообще нет триггера на стакание предметов. Зато есть Руна Исцеления, которую советовал Bergi_Bear, есть две хилки, которые советовал PT153.
Александр19, не верю, что ты вообще нуб в триггерах, так как что-то там составляешь, скорее ты просто удалил триггер из неё, ради которого у тебя карту и просили. Честно скажу, что ты неадекватный. Но мы здесь не для диагнозов, а чтобы на вопросы отвечать, потому вот здесь xgm.guru/p/wc3/193169 возьми систему сложения и разъединения предметов, оттуда скопируй себе в карту триггеры PickUp, AddOrDiv и включи их. Там всё подробно описано, просто сменишь Камень Здоровья на свою хилку. А главное, дроп происходит из-за триггеров OgrItemBoss2 и OgrItemBoss3.
Отключи их.

23

» WarCraft 3 / Срочный вопрос

Похожие вопросы:

ответ
Видимо єта кнопка тесно спряжена с более низкими слоями игры (чит. "hardcoded"). Похоже, что скрыть её нельзя. Я могу только посоветовать вернуться назад и посмотреть, что можно сделать по-другому, чтобы не приходилось скрывать кнопку.
Melissa:
Units\commandstrigs.txt
Units\commandfunc.txt
Порыть там надо, во всяком случае стандартные приказы, иконки и клавиши к ним там прописаны.
(естесственно нужно импоритровать эти изменённые файлики в карту)
Я пробовал прописывать кнопке неадекватные значения позиции кнопки и пиктограммы, но ничего не вышло — игра подставляет свои значения.
ответ
Не видел карты но вероятно должна помочь статья о мультибордах
Создав целочисленные переменные (для каждого нужного пункта), приращиваем их значения (при убийствах и смертях) и периодически выводим в мультиборд

23

» WarCraft 3 / Помогите!!!

Похожие вопросы:

ответ
По описанию похожа на Necris.
ответ
сверху вниз
ответ
Что бы сделать каст огненного столба, необходимо создавать вспомогательного юнита, давать ему способность огненный столб и уже вновь созданному скрытому юниту со способностью москиты давать приказ применять огненный столб. Выше описали в какую сторону копать.
P.S. где то на форуме есть архив карт с кучей примеров разного рода фич. Если найду то скину ссылку.
upd.
ответ
Roy Mustang:
Способ 1
  • Добавить всех твоих кастомных героев в игровые константы
Способ 2
  • Триггерно - установить изначальное макс количество типа юнита на 1

23

» WarCraft 3 / Скелет модели

Похожие вопросы:

ответ
Как на скелет с анимациями натянуть это мясо ?
В статьях по моделлингу все изложено доступным языком, читаем и пробуем. xgm.guru/p/wc3/articles - Раздел 4.
ответ
Только сегодня скачал хаосного мурлока, где было еще таких моделей. Но уже не помню, т.к почистил историю.
Может сейчас поищу.
Не уверен, что это то, что тебе нужно, но вот.
ответ
Надо mdlvis другой версии 1.39 насколько помню

23

» WarCraft 3 / 2 вида атаки у юнита

Похожие вопросы:

ответ
  1. а) Создай 2 переменные-массива по типу "боевая единица" (массив - чтобы для каждого игрока, мы ведь за мультиплеер трем, прально?), назови типа MyChampion и MyChampionDummy.
    б) подготовь невидимого героя-пустышку с нужной тебе иконкой, убери ману, если у чемпиона ее нет. Убери ему радиус обзора, убери галочки типа "отмечать на мини-карте" - остальные - опционально.
    В дальнейшем мы будем синхронизировать пустышку и реального чемпиона, создавая видимость одной боевой единицы.
    Итак, наш первый триггер:
в) Отследи первое появление чемпиона, когда это случится - создай для игрока героя-пустышку. Соответственно сделай MyChampion [number of (Owner of trained unit)]= last trained unit, следующей строчкой создай того самого героя-пустышку для (owner of trained unit) и сделай MyChampionDummy = last created unit. Теперь мы прочно связали этих чуваков. Этот же триггер запускает остальные.
г) Отслеживание здоровья. Сделай изначально выключенный цикличный триггер, там, каждые 0.3 секунды. Триггер запускается пунктом в). Каждые 0.3 секунды меняй здоровье героя (чья икона висит, надо чтобы она соответствовала, прально?) в % на здоровье самого чемпиона.
д) пропищи событие, мол, если выбирает игрок своего героя (кликая на иконку) выбирается чемпион
е) убивай героя вместе с чемпионом
ж) отключай триггеры с проверкой и выбором, пока чемпион мертв
з) не забывай обновлять переменную чемпиона с каждым новым чемпионом.
ответ
The Dude, это несерьезно. Все вопросы описаны в большом количестве статей здесь, на нашем сайте - xgm.guru/p/wc3/articles. То, что перечисляешь не верх мастерства WE, а базовые знания. Материалов предостаточно. Успехов в обучении.
ответ
читай статьи
за тебя тут делать не будут
без того что в статьях ты ничего не поймёшь
для лучников нужна система отлова урона
для этого тебе надо как минимум выучить гуи
у катапульты просто повышай урон у осадного типа атаки
ответ
Я пробовал каналом с заданным приказом patrol. Когда отдаем приказ patrol, то получается что юнит не патрулирует, а бежит кастовать в точку, игноря всех. Я забил на этот способ. Потом пришла новая идея, а вдруг можно абузить этим способом. Представьте, сначала бежит патрулировать в одну точку, а когда дойдет, он же побежит обратно - получит другой приказ, и тут канал срабатывает, и мы узнаем завершение. Короче, не работает. Канал тоже не видит приказы patrol, только в начале
SomeFire, ну это понятно. Но мне хочется свою систему патрулирования иметь. Но чекать поиском весь маршрут на наличие противников и прочее, не хочется. Проще отловить начальные приказы patrol, далее ловим завершение приказа, и в завершении готовый patrol отдать в точку, дошел - отдаем новый patrol в точку. дело - отследить.
пока самый оптимальный вариант - это таймером чекать изменилось ли положение маршрута, там нужно интервал таймера сделать больше. И пока работает хорошо, но насколько хорошо - неизвестно. Но я еще забываю, что юниты могут драться, и в патруле могут остановиться и подраться. Ну придется заигнорить патрулирование.
patrol => заменить на attack - тут визуальные эффекты портят все. рамку как найти. можно кое-что сделать))

23

» WarCraft 3 / Помогите найти модель

Похожие вопросы:

ответ
ответ
Нашел путь на зарубежном форуме, вопрос исчерпан.
ответ
Что сказать, лучше надо искать.
ответ
Это же Лорд Ребрад собственной персоны.
ответ
Карту путей же тебе нужно будет еще импортировать, если так можно

23

» WarCraft 3 / Вопрос по редактору юнитов в WE

Похожие вопросы:

ответ
Переделывайте юнитов, с нуля. Как и код подправьте, ид юнитов\предметов (да всего) это числа от N и до хрен знает сколько, это все данные в таблице, когда удаляете эти обьекты остаются незанятые ячейки, ну из 250 юнитов, осталось только 150, 100 ячеек пустые вот и багует редактор.

23

» WarCraft 3 / Вода на склоне

Похожие вопросы:

ответ
В редакторе существует максимальная высота рельефа, и минимальная высота рельефа, и за пределы этих ограничителей никакой Zephyr не вылезает. Кстати, Zephyr не может влиять на код, ЕМНИП.
ответ
quq_CCCP, пробовал, но что-то не получилось. вставил войска вокруг рудника, и рабы не могли войти в внутрь. Но это не из-за этого.
Все выяснил в чем дело.
нашел ответ
Сначала не понимал, почему вообще не хотело работать это. Везде тыкал, и проверял функцией, и дебагом выводил на экран. Абсолютно везде говорило, что можно передвигаться работникам (даже в воде).
Теперь врубился, почему так было. Нужно было создать блокиратор пути с PATHING_TYPE_PEONHARVESTPATHING. Было два варианта. Либо нарисовать "текстурку + декор" или через "триггеры". Хотя нарисовать текстуру в фотошопе как в статье xgm.guru/p/wc3/pathing-alternate мог, но не знал какого цвета, в статье не показано какого цвета тип PATHING_TYPE_PEONHARVESTPATHING. Или через триггеры см. карту xgm.guru/p/wc3/181384
Хотя создать блокиратор это было полбеды, нужно было понять почему не работает. Работники бегают по участку, то не бегают. Фиг поймешь. Этого можно было бы не заметить (в своей карте пришлось участок визуально рельефом приукрасить, чтобы мог отличать), чтобы понаблюдать. Потом заметил, что вурдалак неся срубленные деревья домой, начал обходить.
Работники когда идут добывать ресурсы, блокиратор их впускает (бывает и не хочет впускать). Но как только они добудут ресурсы, то получат приказ "resumeharvesting" и побегут домой. Тогда встречают в блок. И придется обходить участок. Правильно делают вурдалаки, хотя не всегда. А вот рабы орков и Альянса не правильные какие-то. Они встанут у границы, постоят 2-5 секунд. И походят у границы (туда-сюда), и находят как-будто бы "невидимую" щель, и все по одному входят.
Хотя это работает немного криво (у меня). Работники не хотят обходить участок, это раз. Во-вторых, работников могут впустить. то могут выпустить. Не понятно, что такое.
Насчет светлячков, их даже рассматривать не стал, так как добывают на одном месте.
см. карту PEONHARVESTPATHING
ответ
В одной из миссий за нежить в TFT есть рычаг, при уничтожении которого определённая область заливается водой. Посмотри, как там сделано.
Там Артасу и Ануб'араку надо было пройти сквозь тучу башен, герои их залили водой, башни уничтожились.
ответ
~8gabriel8:
А в игре тоже поменялось или только в редакторе?
ответ
Обозначте точки спавна и создавайте юнитов вокруг них со случайным углом и радиусом, потом делайте SetUnitPosition чтоб юнита выбросило из декорации.

23

» WarCraft 3 / Как сделать телепорт

Похожие вопросы:

ответ
Maniac_91, нет, не самый простой, для реализации телепорта туда-обратно (как на некоторых мили-картах) достаточно указать две области, в которых будут стоять телепорты, поставить здания телепортов на эти области и указать эти области в настройках телепортов, открываемых при двойном клике на них.
ответ
BrandY TM, моста нет, есть область, при входе в которую фиксируется абсолютная высота юнитов. В зависимости от высоты определяется проходимость для каждого конкретного юнита (эмулируется не очень просто, но тем не менее).

Ну и само собой разумеется, есть метод с платформами и переключателями.
ответ
вызов торнадо с длительностью 20 с
по истечению определенного времени назначать новые координаты юниту и паузить-анпаузить для прерывания каста
ответ
если я помню он не является модель а текстура

23

» WarCraft 3 / Кампания Warcraft 3

Похожие вопросы:

ответ
Отключаешь опыт триггером по событию A Unit - Повышает уровень (Если качаешь один уровень за карту это все что нужно) Если нужно 2-3 уровня качать - поставь нужный уровень в условиях.(Integer comparison - Hero level) Можно использовать переменную которую придется увеличивать с каждым повышением уровня героя Set MyHeroLevel=MyHeroLevel+1 и проверять ее значение.
ответ
Поставь шрифты, они у тебя улетели с версии 1.28.5 (?)
Распаковываешь в корень вара на диске д (или где он там у тебя лежит), если не заработает то смотришь реестр, где прописан варик.
Рановато нажал отправить
ответ
XGM Bot:
Похожие вопросы:

ответ
Бэкапы надо было делать, мсье. Перед внесением каких-либо серьезных изменений.
ответ
Проблема решена.
ответ
Вообщем перенастроил Jass New Gen Pack карта как то по другому сохранилась с проверками и всё наладилось)

ответ
Недавно проходил одиночную рпг "Knights and Rogues" от Dazz Lighter-а. Весьма неплохая рпг на одного человека, простая для понимания и игры.
ответ
Модуль вопросов существует для вопросов, а не для просьб сделать все за вас.

23

» WarCraft 3 / Скорость атаки юнита

Похожие вопросы:

ответ
В Состоянии скорости атаки в +5-100% более всего видна разница по сравнению с исходным интервалом атаки. Между состояниями +300% АС и +400% АС разницу заметить очень трудно.
Короче самыми значимыми будут бонусы, которые ты получаешь пока суммарный бонус АС близок к нулю.
Скорость атаки каждого юнита варьируется от -80% (в 4 раза больший интервал) до +400% (в 4 раза меньший интервал). То есть, если у тебя 0% АС и тебя замедляют на 40% - то на скорости атаки это очень сильно скажется. В то же время если у тебя +350% АС и тебя замедлили на 40%, то эффекта тупо не будет видно.
Но 0% будет едва ли, т.к. каждое очко ловкости даёт 2% скорости атаки.
ответ
Смотря что для вас сложно :) Если модификаторов аспд можно пересчитать по пальцем - можете "на месте" подсчитывать наличие абилок и предметов, ускоряющих атаку. Иначе - база данных. Хотя если вам хватит навыков на нормальную БД - можно сразу и мемхак поставить... Там это делается по щелчку пальцев.
ответ
посмотри как у урсы сделано
Там и скорость атаки (со счетчиком ударов) есть и алгоритм добавления зеленого урона
ответ
На мемхаке можно через понижение BAT, делалось одной строкой, в 131 ждём SetUserField, должно давать тот же самый эффект
ответ
Ох, увы наверное никак, как не пытались мы, не нашли ничего толкового

23

» WarCraft 3 / Перенос героя в другую миссию (не работает)

Похожие вопросы:

ответ
Maxsavin, я каждой карте из кампаний даю свой кэш, чтобы не перепуталось ничего.
Не знаю, что получилось бы, сделай я один кэш-файл на всю кампу и грузи карты потом не по порядку. Проверять не буду.
Кампания - это пак карт.

23

» WarCraft 3 / Перевод кампаний

Похожие вопросы:

ответ
мб вот это стоит попробовать
ответ
Попробуй вот это. Рекомендую использовать английскую версию. Плохой перевод.
ответ
Nzoth, все текстовые данные находятся в определённом файле. У карты это .wts, у кампании тоже такой файл есть. Вот его нужно импортировать в кампанию через MPQ Editor (редактор кампании не имеет опции импорта строк, как обычная карта).
Если карта написана на JASS то все текстовые строки из кода будут в коде, их надо вручную переносить. Если на GUI, то большая часть в файле .wts карты.
ответ
Зашел проверить на официалку с русским переводом кампания видна.
ответ
XGM Bot:
Похожие вопросы:

ответ
Нет, тока кешь - тем более лимита на число значений в файле кеша нету, хоть миллион значений заноси.
По мимо героя, что тебе надо :
  1. Можно пробовать Preload Exploit, но если чесно - кешь удобнее, особенно для гуишников.
ответ
8gabriel8, последний созданный кэш содержит кэш который был создан в данной карте (что логично)
следовательно тебе надо заново создавать кэш в каждой миссии
желательно в отдельном триггере с событием прошло 0 секунд


23

» WarCraft 3 / Как вам такая карта?

Похожие вопросы:

ответ
В 90% случаев ты должен уметь всё делать сам и ландшафт и триггеры и модели и идеи и иконки, ты не найдёшь себе себе триггерщика и моделлера, имея на карте "никакой" ланд, гуи триггеры и миллион амбиций, но в тоже время требовать идеи и предложения.
И опять таки у тебя должен быть практический готовый проект на бумаге, чтобы у других возникла мысль:
Да, чёрт! как же это классно!, я хочу в этом поучаствовать! У меня есть...
И снова же надо принять за должное что, будь готов делать практически всё сам (я кажется уже повторился). Команду картоделов свободных найти в 2019 нереально, ибо те что были раньше так круты, что ушли в другие проекты и на другие ЯП, остались лишь ярые фанаты, которые что-то знают но пилят своё, те кто бросил, но могут ещё теоретически что-то вспомнить, ну и новички, которые с трудом старше варкфта, с такими проект не составить, они сами нуждаются в помощи.
Так же можно сделать карту не умея ничего, можно доставать всех и просить делать за тебя чуть ли не по триггеру, обещая добавить в титры, но на это уже никто не купится
ответ
Taurenus,
  1. Идем сюда, читаем внимательно, возвращаемся, когда поймем содержание, в противном случае циклим прочтение, пока не поймем.
  2. Идем сюда, читаем внимательно, возвращаемся, когда поймем содержание, в противном случае циклим прочтение, пока не поймем.
  3. Как правило, те, кому нужен 1 скилл, потом придут за 2-3-4-5-6-7...100000, ибо их подход к работе / творчеству исходно выстроен на паразитировании.
Если совсем упрямый, то раздел вопросов не создан для философских вопросов, вам либо в блог, либо в социальные сети.
ответ
David David, хороший загрузочный экран - весит нехило, так что определимся что важнее, качество или вес.
ответ
Дело было в оптимизаторе.По крайней мере ,когда он включён,вылет происходит аж на 16-17 минуте.Без него спокойно играется и до часа.(до вылета просто не было проверено)

23

» WarCraft 3 / Странные фаталы

Похожие вопросы:

ответ
На сколько я знаю, Микс в отличии от локальных файлов не требует правок в реестре.
ответ
Было создано 22 366 679 экземпляров класса CUnitListNode, которые заняли 255.9 МБ памяти.
При очередной попытке выделения, игра упала.
Виной всему утечки памяти: за 21 минуту набралось 80 тысяч групп и 20 тысяч точек.
Также, из-за выполнения большого количества кода, сильно лагает.
На стадии выбора героя (первые две минуты), выполняется 550 000 операций в секунду, а далее — 1 200 000.
Для сравнения: лимит потока — 300 000 операций.
Хорошо, что ты приложил карту, так как в логе маловато информации.
ответ
богопротивные 0,-11 нужно менять на православные buttonpos=-2147483648,-2147483648

23

» WarCraft 3 / помощь с триггером

Похожие вопросы:

ответ
  1. а) Создай 2 переменные-массива по типу "боевая единица" (массив - чтобы для каждого игрока, мы ведь за мультиплеер трем, прально?), назови типа MyChampion и MyChampionDummy.
    б) подготовь невидимого героя-пустышку с нужной тебе иконкой, убери ману, если у чемпиона ее нет. Убери ему радиус обзора, убери галочки типа "отмечать на мини-карте" - остальные - опционально.
    В дальнейшем мы будем синхронизировать пустышку и реального чемпиона, создавая видимость одной боевой единицы.
    Итак, наш первый триггер:
в) Отследи первое появление чемпиона, когда это случится - создай для игрока героя-пустышку. Соответственно сделай MyChampion [number of (Owner of trained unit)]= last trained unit, следующей строчкой создай того самого героя-пустышку для (owner of trained unit) и сделай MyChampionDummy = last created unit. Теперь мы прочно связали этих чуваков. Этот же триггер запускает остальные.
г) Отслеживание здоровья. Сделай изначально выключенный цикличный триггер, там, каждые 0.3 секунды. Триггер запускается пунктом в). Каждые 0.3 секунды меняй здоровье героя (чья икона висит, надо чтобы она соответствовала, прально?) в % на здоровье самого чемпиона.
д) пропищи событие, мол, если выбирает игрок своего героя (кликая на иконку) выбирается чемпион
е) убивай героя вместе с чемпионом
ж) отключай триггеры с проверкой и выбором, пока чемпион мертв
з) не забывай обновлять переменную чемпиона с каждым новым чемпионом.
ответ
Вот, должно работать. Если понадобится временное подчинение - таймер поможет.
ответ
Вобщем, с какого-то ... не работал цикл. Пришлось поставить просто подряд много повторяющихся действий (развернуть цикл и прописать отдельно каждое из его повторений), так заработало. Странный этот редактор...
ответ
При осмотре карты тоже не совсем понял почему игра перестает строительство. Как решение, ты можешь даммику строительства поменять расу на нежить, таким образом уже здание само будет достраиваться.
Поскольку у тебя на карте при беглом осмотре юнитов строителей я не заметил, то выше указанное решение как раз то что нужно тебе.
П.С.
Под какую версию игры рассчитана данная карта?
ответ
Думаю, что можно сделать через группу. В твоём триггере просто перебираешь всех юнитов и двигаешь куда тебе нужно. Тогда тебе нужно будет только добавлять в группу новых юнитов, которые должны так двигаться. А если не хочешь, чтобы юнит двигался - удаляешь его из группы.
Например, создаешь триггер, который регистрирует новых юнитов, вошедших в карту. В условии проверяешь тип юнита. Если подходит, то добавляешь его в ту группу, что я описал выше.

23

» WarCraft 3 / Анимация во время движения.

Похожие вопросы:

ответ
а флаг "не убегает" не варик?
ответ
~8gabriel8:
Hate, всмысле? Я карту к вопросу приложил вообще-то.
Лучше вот новая версия с тегами
Ну я сделал, короче, добавив два триггера. Один отлавливает любой приказ дамочки во время сальто и устанавливает ей скорость анимации в 10000х(время таймера+0,01)%, потом устанавливает анимацию соответствующего сальто и запускает таймер на 0,01 секунду. Второй по истечению этого таймера устанавливает дамочке скорость анимации 100%.
Выглядит временами не особо гладко, но в целом меня устраивает. Только надо немножко подкорректировать анимации модели.
ответ
PyCCKuu_4eJl:
Как вариант, раз вы не паузите юнита, он может заагриться на кого-то и проигрываемая вами анимация сбросится на анимацию атаки.
Он и правую кнопку в землю нажать может и всё сбросится.
Я уже решил проблему ускорением и новым таймером, хотя всё равно смотрится так себе, но работает.
Анимация вращения "как у акса" но была с названием "spell, slam" поэтому не мог её к вихрю прикрутить.
ответ
Пиши свою систему движения с подменой smart. В простейшем случае для временного дамми во время действия спелла

23

» WarCraft 3 / Как триггерно добавить бафф юниту?

Похожие вопросы:

ответ
Нет универсальных решений нет и врятли будут, тут все надо своими руками, лучше для некоторых баффов юзать триггеры чтобы отследить смерть событием TriggerRegisterDeathEvent а так же применение диспелящих способностей на цель, либо самой целью.

23

» WarCraft 3 / Вопрос по UI

Похожие вопросы:

ответ
Кажется нашел решение проблемы.
Редактируется в этом файле, но чтобы читались y-строчки ниже 1126 надо соответственно поменять в самом начале ограничитель.
То, что нужно поменять - красным.
y-строчки выделил синим
(Прошу прощения за мой "французский", нуб есть нуб)
ответ
Почему? Не ты ли автор?
Вроде бы, ещё на форуме xgm это обсуждалось. Кто-то ещё в той теме программку написал, чтобы получать координаты курсора.
ответ
Лучше пересмотрите архитектуру своего кода!
А если Вы на 100500 процентов уверенны в правильности своего подхода, то идею в студию. Иначе экстрасэнсы в отпуске и вам никто не поможет.
ответ

23

» WarCraft 3 / Экспорт в Blender

Похожие вопросы:

ответ
Глупо требовать от MdlVis поддержки профессиональных 3D-редакторов, он был написан только для варика.
Способ экспорта из макс в mdl - через плагины.Так что из Blender перевод в max , затем через плагин в mdl, затем через MdlVis в mdx.
Еще можно перевести в ms3d и потом сразу через War3ModelEditore.
ответ
для блендера есть только один плагин - импортёр...
который глючный и совсем негодный...
напрямую конвертить не получится...
уж тем более с анимациями...
есть вариант конверта в милкшейп (опять че через сторонний аддон), а оттуда в .мдх
конвертит хорошо, с костями, но анимацию убивает...
есть NeoDex для 3dsMax, в котором по плану можно делать всё и конвертить напрямую в .мдх...
ответ
через obj не над там копируються вершины а то и несколько раз и слои слепляются в 1,3ds и через милкшарп,еси напрямую в мделвис то uv будет зекальна по y,а лутше перкинуть через макс(еси есть)
ну полигонам то укладывайся в 10к на супер хд моделей
материал ты не как не перенесешь только текстуру
материалы для вара создаются в warcraft model editor
ответ
Да, можно сделать модель в блендере. Насчет анимаций не знаю, но на hiveworkshop кажется есть модель рыцаря целиком сделанная в blender. Геометрию и развертку перенести точно можно.
Делаешь модель. В блендере задаешь развертку. Экспортируешь модель в mdl формат. На сайте есть всё необходимое для этого. Если делаешь модель в новой версии blender, придётся сперва открыть готовую модель в более старой версии blender, поддерживающей экспорт. Mdl конвертируешь в mdx. (Конвертер есть на сайте) А потом в mdlvis и war3 model editor допиливаешь до играбельного вида.
Текстуру по развертке рисуешь в фотошопе. Сохраняешь в png. Конвертируешь в blp. (Программа есть на сайте) В mdlvis проверяешь.